這時代主要是C/S或者B/S模式的應用與架構, 主要是面向功能來實現業務.
像是我們需要FTP或者一個能提供靜態網頁的伺服器.
這也是所謂的單一架構(Monolithic Architecture).
常見的開發流程往往是根據ER Model設計出資料表, 然後進行CRUD操作.
特點就是一個業務功能形成完整的閉環應用.
優點:
缺點:
因為前一個世代導致巨大臃腫的系統, 難以管理. 很難兼顧高質量的交付.
開始有了"高內聚"、"低耦合"、"容易擴展"、"集成"、"模組化"的概念.
"OOP"和"組件Component"的概念由然而生.
也有了Application server這概念, 也對業務進行分層架構(MVC)、橫切關注點AOP、DI/IoC. 出現了中間件(MiddleWare)這些設計模式等概念.
特點就是一些獨立組件, 多層的模式, 關注點分散, 合理的界面定義(SRP), 每一層可以再分出自己的Business Logic模組, 增加功能模組的可重複使用性.
But,就還是以單一架構的架構存在
優點:
缺點:
很容易導致同公司但不同業務線由不同的開發團隊負責.
技術語言不同, 資料庫也不同, 彼此不相互溝通.
就是各自獨立的"煙囪式系統".
這種架構會導致重複開發, 因為不同部門之間技術允許不同, 所以可能會出現同功能的模組, 用不同語言開發. 系統之間打通成本頗高.
當然若是業務線就一組, 就沒差了:D
SOA的幾個特徵:
為此我們把服務流程的思維, 拆解成多個不同的步驟, 每個步驟的實現都可以定義成一個功能組件.
每個組件用"Web Service"的方式進行包裝. 這樣就能達成技術實現的隔離性.
每個服務之間透過WSDL定義服務界面,透過SOAP進行調用資料編碼,傳輸.
服務之間透過UDDI進行服務發現後然後訪問.
Web Service實現了服務能運行在不同台機器和OS上, 且服務間相互發現和呼叫調用的可能, 並且透過協議傳輸資料.
ESB廣義來說就是一根管道, 用來連接各個服務節點.
ESB的存在就是為了集成基於不同協議間的不同服務. ESB做了訊息的轉化跟路由的工作, 能讓不同的服務之間互通有無.
所以它才會被稱為"總線".
通常也會用MessageQueue來實現服務之間依賴的解耦合, 替服務提供異步處理能力. 解決因併發同步調用資源造成的問題, 達到"限流&削峰"的作用.
優點講說了很多, 講講缺點:
因此後面出了REST和JSON, 來改善這部份的缺陷.
由於有輕量級REST協議、Container、輕量級通訊協定(JSON,protobuf、messagepack)、Service Registry、PaaS、Iaas等科技的出現.
加上微小的服務架構能夠很好彌補SOA的一些缺陷, 因為SOA沒法滿足業務的快速變化, 且當時還不盛行雲服務.
微服務目的不只是流程的解構, 更希望能圍繞在業務上(DDD)開發, 也讓小團隊也能快速開發迭代.
微服務其實沒非常準確的定義, 但有一些基本特點:
基於業務角度來描述微服務組件, 例如會員微服務, 訂單微服務, 商品微服務
從技術方面就是技術微服務, 快取緩存微服務, 檔案文件微服務, 數據微服務, 安全驗證微服務...